Skip to content

QoL: message blocks, clean-install keep list, password helper, network limits - #61

Draft
MickLesk wants to merge 6 commits into
mainfrom
feat/core-qol
Draft

MickLesk wants to merge 6 commits into
mainfrom
feat/core-qol

Conversation

@MickLesk

@MickLesk MickLesk commented Sep 23, 2026 •

Copy link
Copy Markdown
Member

✍️ Description

Four independent fixes, one per function. None changes an existing call site.

msg_block_resume / msg_info / msg_ok (core/core.func)
msg_info pushes onto a block stack, msg_ok pops and restarts the spinner for whatever is underneath. A helper that opens its own block — setup_uv, setup_nodejs, fetch_and_deploy
* — used to stop the outer block's spinner with nothing bringing it back, so the outer msg_ok reported on a step that had been invisible since. msg_warn/msg_error clear the stack, as they already killed the spinner. A msg_ok without a matching msg_info does not underflow.

random_password [length] (core/core.func)
Alphanumeric, exact length, default 24. Replaces openssl rand -base64 N | tr -dc … | head -c N, which returns fewer characters than asked for because the filter runs after the length is fixed, and takes a SIGPIPE under pipefail. Base64 also carries / and +, which break the DSN and URL strings these values get pasted into. Hex tokens are unaffected and stay as they are.

_cs_clean_target_dir (lib/forge.func)
New CLEAN_INSTALL_KEEP: space-separated paths relative to the target that survive a CLEAN_INSTALL=1 wipe. Moved aside and back rather than pruned from find — a kept path can be nested, and removing its parent would take it along; mv also keeps a symlink a symlink, which is the case that prompted this. Behaviour with the variable unset is unchanged.

_cs_write_cargo_net, setup_uv, setup_composer (lib/runtime.func)
Network limits for the remaining package managers, matching what pnpm and yarn already got: cargo [net] retry = 5 (appended, an existing config survives), UV_HTTP_TIMEOUT=600 (uv has no config key, only the env var), composer process-timeout 600 on both install paths.

🔗 Related Issue

Fixes #

✅ Prerequisites (X in brackets)

  • Self-review completed – Code follows project standards.
  • Tested thoroughly – Changes work as expected (Proxmox VE and/or Incus, as applicable).
  • No security risks – No hardcoded secrets, unnecessary privilege escalations, or permission issues.
  • API.txt regenerated – If a function signature or behavior changed, API.txt was updated to match.

🤖 AI Assistance (X in brackets)

If you used an AI tool (GitHub Copilot, Claude, ChatGPT, etc.) to write or generate any code in this PR, you must confirm compliance below.
Select exactly one option.

  • No AI used – Code was written without AI assistance.
  • AI was used – The output has been reviewed and corrected, and I take responsibility for it matching this repo's conventions.

🛠️ Type of Change (X in brackets)

  • 🐞 Bug fix – Resolves an issue without breaking functionality.
  • ✨ New feature – Adds new, non-breaking functionality.
  • 💥 Breaking change – Alters existing behavior in a way that may require updates in every downstream script.
  • 🔧 Refactoring / Code Cleanup – Improves readability or maintainability without changing functionality.
  • 📝 Documentation update – Changes to README, docs/, CONTRIBUTING.md, or other docs.

@github-actions

Copy link
Copy Markdown
Contributor

Try this branch

The engine and the scripts resolve independently, so a production script can
be run against the engine from this PR by setting one variable:

COMMUNITY_SCRIPTS_CORE_URL=https://raw.githubusercontent.com/community-scripts/core/feat/core-qol \
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/ct/debian.sh)"

Swap ct/debian.sh for whatever exercises the change.

Run a script from a fork as well
curl -fsSL https://raw.githubusercontent.com/community-scripts/core/feat/core-qol/tools/run.sh |
  bash -s -- https://raw.githubusercontent.com/YOU/ProxmoxVED/your-branch ct/debian.sh \
             https://raw.githubusercontent.com/community-scripts/core/feat/core-qol

Note that run.sh is reached through a pipe, so the script it starts inherits
an exhausted stdin. Whiptail is fine — it opens /dev/tty — but a plain read
would see EOF. The single-variable form above does not have that problem.

Useful flags while testing

dev_mode=net logs every engine fetch with status and duration, which is the
quickest way to confirm the branch is really being used. dev_mode=keep stops a
failed build from deleting the container along with the evidence.

@MickLesk MickLesk changed the title Feat/core qol QoL: message blocks, clean-install keep list, password helper, network limits Sep 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant